package com.atguigu.gulimall.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/*
* 1.整合Mybatis-plus
*   1）导入依赖
*   2）配置
*       ①导入数据库的驱动 db-connector
*       ②在application.yml配置数据源相关信息
*   3)配置Mybatis-Plus
*       ①使用@MapperScan
*       ②告诉Mybatis-plus的sql映射文件在哪
*
* 2、逻辑删除
* 1）配置全局的逻辑删除规则（省略）
* 2）配置逻辑删除组件bean（省略）
* 3）给Bean加上逻辑删除注解@TableLogic
*
* 3.JSR303校验
* 1)给需要校验的Bean加上注解javax.validation.constraints，并且定义自己的message提示
* 2）开启校验功能@Valid
*    效果：校验错误以后会有默认响应
* 3)给校验的bean后紧跟一个BindingResult，就可以获取到校验的结果
* 4）分组校验(多场景的复杂校验)
*       ①给校验注解标注什么情况下需要进行校验
*       ②@Validate是spring当中定义好分组校验以后在controller上定义
*         哪个分组的时候生效
*       ③ 默认不指定分组的校验注解，只会在不分组的时候生效，分好组的不生效
*
*
* 4.统一的异常处理
* 1)编写一场处理类，可以使用springmvc当中的@ControllerAdvice
* 2）使用@Exceptionhandler标注方法可以处理的异常
*
* 5、自定义校验
*     1)编写一个自定义的校验注解
*     2)编写一个自定义的校验器
*     3)关联自定义的校验器和自定义的校验注解
*
* */
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.atguigu.gulimall.product.feign")
@MapperScan("com.atguigu.gulimall.product.dao")
@SpringBootApplication
public class GuilimallProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(GuilimallProductApplication.class, args);
    }

}
